import { BaseFightLogic } from "../BaseFightLogic";
import IBaseCure from "../data/IBaseCure";
import IBaseFightAttribute from "../data/IBaseFightAttribute";
import IBaseHurt from "../data/IBaseHurt";
import { FightGroupEnum } from "../enum/FightGroupEnum";
import { LifeEnum } from "../enum/LifeEnum";
import IBaseCureBullet from "./IBaseCureBullet";
import IBaseFightLife from "./IBaseFightLife";
import IBaseInjureBullet from "./IBaseInjureBullet";
import IFightAction from "./IFightAction";

/*****************************
 *@file: IFight
 *@author: 陈吕唐
 *@desc: 战斗单位要实现的接口
 *@date: 2024-02-27	10:22
 *****************************/
export default interface IBaseFight extends IBaseFightAttribute, IBaseFightLife, IFightAction {
    /**
     * 当前单位存活状态
     */
    readonly lifeState: LifeEnum;


    /**
     * 当前队友
     */
    readonly team: BaseFightLogic[];


    /*
     * 当前敌人
     */
    readonly enemy: BaseFightLogic[];

    /**
     * 当前单位分组
     */
    readonly group: FightGroupEnum;

    /**
     * 当前血量
     */
    readonly hp: number;

    /**
     * 最大血量
     */
    readonly maxHp: number;


    /**
     * 开始战斗(全部战斗对象初始化完成后调用)
     */
    fightStart(): void;

    /**
     * 被攻击调用方法
     * @param bullet 子弹数据
     * @returns 
     */
    hurt: (bullet: IBaseInjureBullet) => IBaseHurt;


    /**
     * 被治疗时由医生对象调用
     * @param bullet 
     * @returns 
     */
    curt: (bullet: IBaseCureBullet) => IBaseCure;
}